#!/usr/bin/env python
"""\
NAME
    Dreiding.py - The Dreiding force field, from Mayo, Olafson, Goddard
                  JPC 94, 8897 (1990)

LICENSE
    Copyright (c) 2003, Richard P. Muller. All Rights Reserved.
"""

Data = {
    # type  sym,  r0     th0      x0,     D0     Scale  Atno, Hyb, Inv Res
    11 : ('H_',  0.330, 180.00,  3.195,  0.015, 12.38,  1, 1, 0, 0),
    12 : ('Hb',  0.330, 180.00,  3.195,  0.015, 12.38,  1, 2, 0, 0),
#    'H__HB' : (0.330, 180.0,   3.195,    0.0152,    12.382),
#    'B_3'   : (0.880, 109.471, 4.02,     0.095,     14.23),   
#    'B_2'   : (0.790, 120.0,   4.02,     0.095,     14.23),   
    64 : ('C_3', 0.770, 109.47,  3.890,  0.095, 14.03,  6, 4, 0, 0),  
    60 : ('C_R', 0.700, 120.00,  3.890,  0.095, 14.03,  6, 3, 1, 1),  
    63 : ('C_2', 0.670, 120.00,  3.890,  0.095, 14.03,  6, 3, 1, 0),  
    62 : ('C_1', 0.602, 180.00,  3.890,  0.095, 14.03,  6, 2, 0, 0),  
    73 : ('N_3', 0.702, 106.70,  3.662,  0.077, 13.84,  7, 3, 1, 0),  
    70 : ('N_R', 0.650, 120.00,  3.662,  0.077, 13.84,  7, 2, 0, 1),  
    72 : ('N_2', 0.615, 120.00,  3.662,  0.077, 13.84,  7, 2, 0, 0),  
    71 : ('N_1', 0.556, 180.00,  3.662,  0.077, 13.84,  7, 1, 0, 0),  
    82 : ('O_3', 0.660, 104.51,  3.405,  0.096, 13.48,  8, 2, 1, 0),  
    80 : ('O_R', 0.660, 120.00,  3.405,  0.096, 13.48,  8, 2, 0, 1),  
#    'O_2'   : (0.560, 120.0,   3.4046,   0.0957,    13.483),  
    81 : ('O_1',  0.528, 180.00,  3.405,  0.096, 13.48,  8, 1, 0, 0),  
    91 : ('F_' , 0.611, 180.00,  3.472,  0.073, 14.44,  9, 1, 0, 0),
    133: ('Al3', 1.047, 109.471, 4.390,  0.310, 12.00, 13, 3, 1, 0),
    144: ('Si3', 0.937, 109.47,  4.270,  0.310, 12.00, 14, 4, 0, 0),
    153: ('P_3', 0.890,  93.30,  4.150,  0.320, 12.00, 15, 3, 1, 0),
    162: ('S_3', 1.040,  92.10,  4.03,   0.344, 12.00, 16, 2, 0, 0),
    171: ('Cl',  0.997, 180.0,   3.9503, 0.2833,13.86, 17, 1, 0, 0),
    313: ('Ga3', 1.210, 109.471, 4.39,   0.4,   12.0,  31, 3, 1, 0),
    324: ('Ge3', 1.210, 109.471, 4.27,   0.4,   12.0,  32, 4, 0, 0),    
    'As3'   : (1.210, 92.1,    4.15,     0.41,      12.0),    
    'Se3'   : (1.210, 90.6,    4.03,     0.43,      12.0),    
    'Br'    : (1.167, 180.0,   3.95,     0.37,      12.0),    
    'In3'   : (1.390, 109.471, 4.59,     0.55,      12.0),    
    'Sn3'   : (1.373, 109.471, 4.47,     0.55,      12.0),    
    'Sb3'   : (1.432, 91.6,    4.35,     0.55,      12.0),    
    'Te3'   : (1.280, 90.3,    4.23,     0.57,      12.0),    
    'I_'    : (1.360, 180.0,   4.15,     0.51,      12.0),      
    'Na'    : (1.860, 90.0,    3.144,    0.5,       12.0),      
    'Ca'    : (1.940, 90.0,    3.472,    0.05,      12.0),      
    'Fe'    : (1.285, 90.0,    4.54,     0.055,     12.0),      
    'Zn'    : (1.330, 109.471, 4.54,     0.055,     12.0)
    }
    

DefaultTypes = [ None, 0, None,
                 None, None,   None, 1, 5, 9, 13, None,
                 None, None,   None, 14, None, None, None, None]

# More data in a different format, just so I don't have to type it
#  in again when I add more atom types
# units:       Ang    degrees  Ang       kcal/mol   kcal/mol
OldData = {#     r_bond th_bond  r_vdw     d_vdw      zeta_vdw
    'H_'    : (0.330, 180.0,   3.195,    0.0152,    12.382),  
    'H__HB' : (0.330, 180.0,   3.195,    0.0152,    12.382),
    'H_b'   : (0.510, 90.0,    3.195,    0.0001,    12.0),    
    'B_3'   : (0.880, 109.471, 4.02,     0.095,     14.23),   
    'B_2'   : (0.790, 120.0,   4.02,     0.095,     14.23),   
    'C_3'   : (0.770, 109.471, 3.88983,  0.0951,    14.034),  
    'C_R'   : (0.700, 120.0,   3.88983,  0.0951,    14.034),  
    'C_2'   : (0.670, 120.0,   3.88983,  0.0951,    14.034),  
    'C_1'   : (0.602, 180.0,   3.88983,  0.0951,    14.034),  
    'N_3'   : (0.702, 106.7,   3.6621,   0.0774,    13.843),  
    'N_R'   : (0.650, 120.0,   3.6621,   0.0774,    13.843),  
    'N_2'   : (0.615, 120.0,   3.6621,   0.0774,    13.843),  
    'N_1'   : (0.556, 180.0,   3.6621,   0.0774,    13.843),  
    'O_3'   : (0.660, 104.51,  3.4046,   0.0957,    13.483),  
    'O_R'   : (0.660, 120.0,   3.4046,   0.0957,    13.483),  
    'O_2'   : (0.560, 120.0,   3.4046,   0.0957,    13.483),  
    'O_1'   : (0.528, 180.0,   3.4046,   0.0957,    13.483),  
    'F_'    : (0.611, 180.0,   3.4720,   0.0725,    14.444),    
    'Al3'   : (1.047, 109.471, 4.39,     0.31,      12.0),
    'Si3'   : (0.937, 109.471, 4.27,     0.31,      12.0),
    'P_3'   : (0.890, 93.3,    4.15,     0.32,      12.0),
    'S_3'   : (1.040, 92.1,    4.03,     0.344,     12.0),
    'Cl'    : (0.997, 180.0,   3.9503,   0.2833,    13.861), 
    'Ga3'   : (1.210, 109.471, 4.39,     0.4,       12.0),
    'Ge3'   : (1.210, 109.471, 4.27,     0.4,       12.0),    
    'As3'   : (1.210, 92.1,    4.15,     0.41,      12.0),    
    'Se3'   : (1.210, 90.6,    4.03,     0.43,      12.0),    
    'Br'    : (1.167, 180.0,   3.95,     0.37,      12.0),    
    'In3'   : (1.390, 109.471, 4.59,     0.55,      12.0),    
    'Sn3'   : (1.373, 109.471, 4.47,     0.55,      12.0),    
    'Sb3'   : (1.432, 91.6,    4.35,     0.55,      12.0),    
    'Te3'   : (1.280, 90.3,    4.23,     0.57,      12.0),    
    'I_'    : (1.360, 180.0,   4.15,     0.51,      12.0),      
    'Na'    : (1.860, 90.0,    3.144,    0.5,       12.0),      
    'Ca'    : (1.940, 90.0,    3.472,    0.05,      12.0),      
    'Fe'    : (1.285, 90.0,    4.54,     0.055,     12.0),      
    'Zn'    : (1.330, 109.471, 4.54,     0.055,     12.0)
    }                                            

# Other data
k_bond = 700.0  # Eqn 7, units of kcal/mol/A^2
d_bond = 70.0   # Eqn 8, units of kcal/mol

k_angle = 100.0 # units of kcal/mol/rad^2

#Torsions
# kcal/mol   -           degrees
V_33 = 2.0;  n_33 = 3;   phi_33 = 180.
V_32 = 1.0;  n_32 = 6;   phi_32 = 0.
V_22 = 45.0; n_22 = 2;   phi_22 = 0.
V_R = 25.0;  n_R = 2;    phi_R = 180.
V_22c = 5.;  n_22d = 2;  phi_22c = 180. # center of 2 sp^2's or R's
V_22e = 10.; n_22e = 2;  phi_22e = 180. # exocyclic (biphenyl)
V_33o = 2.0; n_33o = 2;  phi_33o = 90.  # oxygen column
V_32o = 2.0; n_32o = 2;  phi_32o = 180. # oxygen column

# Leaving out inversion terms for now

            
    


